#ifndef NANE_INPUTDEVICESYSTEM_H
#   define  NANE_INPUTDEVICESYSTEM_H

#   include "nane/InputSystem/IInputDeviceSystem.h"
#   include "nane/core/SubSystem.h"

namespace nane 
{
    struct InputEvent
    {
        byte deviceNum;
        byte axis;
        int32 value;
    };
    
    class InputDeviceSystem
        : public SubSystem<IInputDeviceSystem>
    {
    public:
        InputDeviceSystem();
        ~InputDeviceSystem();
        
    public:
        void Shutdown();
        EInputDevice GetDeviceType() const;
        bool InitializeContext( IWindow::OSHandle _windowHandle );
        void ShutdownContext();
        InputEvent* Poll();
        
    private:        
        class Implementation;
        Implementation* m;
    };
}   // namespace nane

#endif	// NANE_INPUTDEVICESYSTEM_H
